package com.huluobo.kotlinim2006a.extention

/**
 * Created by lc on 2023/2/2.
 * 扩展函数(扩展方法)
 * kotlin的特性之一
 * String 是目标的类型,想给哪个类或者类型加上自定义的方法
 * isValidUserName,这是方法名,原则上可以自由定义
 * :Boolean 当前方法的返回值
 */

//验证一个String是否符合3-20位字符,并且首字符为英文
fun String.isValidUserName(): Boolean = matches(Regex("^[a-zA-Z]\\w{2,19}$"))

//验证一个String是否符合3-20位数字
fun String.isValidPassword(): Boolean = matches(Regex("^[0-9]{3,20}$"))

//1."map",取map中的每个值,相当于循环或者迭代
//2."Pair",new了一个Pair的对象,把map中每个kv值都存储到Pair对象当中
//3."toTypeArray" new了一个数组(集合),将Pair中的对象一个个存进去
//4.最终意义是将一个map转换为一个存有该map所有值(对象)的一个list
//5.<K,V>相当于形参
fun <K, V> MutableMap<K, V>.toVarargArray(): Array<Pair<K, V>> {
    return map {
        Pair(it.key, it.value)
    }.toTypedArray()
}